package team.api;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import org.apache.log4j.Logger;

import study.itwill.common.DBHandler;

public class board_save_reply {

	

	static Logger logger = Logger.getLogger(board_save_reply.class);
	private static final String TABLE = "board_save_reply";

	
	/**
	 * 
	 * @param b_reply 댓글내용
	 * @param reg_date 등록일시
	 * @param edit_date 변경일시
	 * @param member_seq 회원 일련번호
	 * @param b_video_save_seq 동영상 일련번호
	 * @return boolean
	 */
	public int b_reply_write(String b_reply,
			int member_seq, int b_video_save_seq) {

		logger.debug("============ method start >> addReply");
		logger.debug(" -- [PARAMS INFO] -- ");
		logger.debug("b_reply: " + b_reply);
		logger.debug("member_seq: " + member_seq);
		logger.debug("b_video_save_seq: " + b_video_save_seq);

		// SQL 인젝션 방어
		b_reply = b_reply.replace("'", "\'");


		// 트랜젝션에 대한 판단이 잘 서지 않는다면, 무조건 하면 된다.
		DBHandler.beginTrans();

		// INSERT 처리를 위한 구현
		String sql = "INSERT INTO board_save_reply("
				+ "b_reply, reg_date, edit_date, member_seq, b_video_save_seq"
				+ ") VALUES (" + "'%s', now(), now(), %d, %d);";

		boolean result = DBHandler.execSql(sql, b_reply, member_seq, b_video_save_seq);
		int seq = 0;
		// -----------------------------------------
		// 결과처리
		// -----------------------------------------
		if (result) {

			DBHandler.commit();
			seq = DBHandler.getMax(TABLE, "seq", null);
			logger.debug("처리결과 >> " + seq + "번 댓글 등록 성공");
		} else {
			DBHandler.rollback();
			logger.error("처리결과 >> 데이터 추가 실패");
		}

		logger.debug("============ method end >> addReply");

		return seq;
	}

	/**
	 * 
	 * @param seq 일련번호
	 * @param b_reply 댓글내용
	 * @param reg_date 등록일시
	 * @param edit_date 변경일시
	 * @param member_seq 회원 일련번호
	 * @param b_video_save_seq 동영상 일련번호
	 * @return boolean
	 */
	public boolean b_reply_update(int seq, String b_reply, int member_seq, int b_video_save_seq) {

		logger.debug("============ method start >> updateReply");
		logger.debug(" -- [PARAMS INFO] -- ");
		logger.debug("seq: " + seq);
		logger.debug("b_reply: " + b_reply);
		logger.debug("member_seq: " + member_seq);
		logger.debug("b_video_save_seq: " + b_video_save_seq);

		// SQL 인젝션 방어
		b_reply = b_reply.replace("'", "\'");

		boolean b_reply_up = false;

		DBHandler.beginTrans();

		String sql = "UPDATE board_save_reply "
					+"SET b_reply = '%s', "
					+"edit_date = now(), member_seq = %d, "
					+"b_video_save_seq = %d "
					+"WHERE seq = %d;";

		b_reply_up = DBHandler.execSql(sql, b_reply,
				member_seq, b_video_save_seq, seq);

		if (b_reply_up) {
			DBHandler.commit();
			logger.debug("처리결과 >> " + seq + "번 댓글 수정성공");
		} else {
			DBHandler.rollback();
			logger.error("처리결과 >> 데이터 수정 실패 ");
		}


		logger.debug("============ method end >> updateReply");

		return b_reply_up;
	}
	
	/**
	 * 
	 * @return boolean
	 */

	public boolean b_reply_delete(int seq) {

		logger.debug("=============== method start >> deleteb_reply_delete");
		logger.debug("[PARAMS] seq=" + seq);
		
		boolean b_reply_del = false;
		
		DBHandler.beginTrans();
		
		String sql = "DELETE FROM board_save_reply WHERE seq = %d";
		b_reply_del = DBHandler.execSql(sql, seq);
		
		if(b_reply_del) {
			DBHandler.commit();
			logger.debug("처리결과 >> " + seq + "번 댓글 삭제 성공");
		} else {
			DBHandler.rollback();
			logger.error("처리결과 >> 데이터 삭제 실패 ");
		}
		
		logger.debug("=============== method end >> deleteb_reply_delete");
		
		return b_reply_del;
	}

	/**
	 * 운동법 게시판 댓글 count
	 * @param seq
	 *            일련번호
	 * @return board22
	 */

	public board_save_reply b_reply_count(int seq) {

		board_save_reply result = null;

		logger.debug("============ method start >> countReply");
		logger.debug(" -- [PARAMS INFO] -- ");
		logger.debug("seq: " + seq);

		logger.debug("============ method end >> countReply");

		return result;
	}

	
}